//要能判断自己是否已经被实例化过
class SingleDog {
    show() {
        console.log('我是单例对象')
    }

}
//使用闭包的思想
SingleDog.getInstance = (function () { //在类外面定义，相当于私有方法
    let instance = null
    return function () {//内嵌一个函数，等待getInstance执行结束后再被调用
        if (!instance) {//此时instance存在于新创建的一个闭包空间中
            instance = new SingleDog()
        }
        return instance
    }
})()//这里表示getInstance()是个自执行函数，无需调用就会自己执行
const s1 = SingleDog.getInstance()//代表调用了getInstance方法执行完后return出来的那个内置函数
const s2 = SingleDog.getInstance()
console.log(s1 === s2); //true
